package com.mapaoer.user.service;

import com.mapaoer.user.dto.DeveloperProfileDTO;

import java.util.List;

/**
 * 开发者资料服务接口
 * 定义开发者资料相关的业务操作方法
 */
public interface DeveloperProfileService {

    /**
     * 创建开发者资料
     * @param developerProfileDTO 开发者资料
     * @return 创建结果
     */
    boolean createDeveloperProfile(DeveloperProfileDTO developerProfileDTO);

    /**
     * 更新开发者资料
     * @param id 开发者资料ID
     * @param developerProfileDTO 开发者资料
     * @return 更新结果
     */
    boolean updateDeveloperProfile(Long id, DeveloperProfileDTO developerProfileDTO);

    /**
     * 根据ID获取开发者资料
     * @param id 开发者资料ID
     * @return 开发者资料
     */
    DeveloperProfileDTO getDeveloperProfileById(Long id);

    /**
     * 根据用户ID获取开发者资料
     * @param userId 用户ID
     * @return 开发者资料
     */
    DeveloperProfileDTO getDeveloperProfileByUserId(Long userId);

    /**
     * 搜索开发者
     * @param skills 技能
     * @param minExperience 最小工作年限
     * @param workType 工作类型
     * @param minAge 最小年龄
     * @param maxAge 最大年龄
     * @return 开发者列表
     */
    List<DeveloperProfileDTO> searchDevelopers(String skills, Integer minExperience, String workType, Integer minAge, Integer maxAge);

    /**
     * 添加技能
     * @param developerId 开发者ID
     * @param skillName 技能名称
     * @param level 熟练程度
     * @param experienceYears 使用年限
     * @return 添加结果
     */
    boolean addSkill(Long developerId, String skillName, String level, Integer experienceYears);

    /**
     * 删除技能
     * @param developerId 开发者ID
     * @param skillId 技能ID
     * @return 删除结果
     */
    boolean removeSkill(Long developerId, Long skillId);
}